עמוד 1 עמוד 1 מתוך 11, בחינה בתוכנה 1 מספר סידורי: מספר ת"ז: סמסטר א' תשע"ז, מועד א', 11 בפברואר 117 ליאור וולף, תומר עזרא, לנה דנקין משך הבחינה שלוש שעות יש להניח שהקוד שמופיע במבחן מתאים לגירסה 7 של ג'אווה, אלא אם כן צויין אחרת בשאלה )יש שאלה/שאלות שמתייחסות ספיציפית לג'אווה 8( בבחינה זו מופיע קוד שבחלקו אינו מתקמפל, אינו רץ או שנוגד את הסטנדרטים של java כפי שנלמדו בקורס, וזאת מתוך מטרה לבחון ידע והבנה של נושאים מסויימים אין לראות בקטעי קוד אלה דוגמא לכתיבה נכונה ב java יש לסמן את התשובה הטובה ביותר בתשובון לא יינתן ניקוד על סימון תשובה בטופס הבחינה או במחברת הבחינה ניתן לנמק את התשובות בטופס הנימוקים המצורף בלבד נימוקים בגוף הבחינה לא יתקבלו ניקוד ינתן ללא קשר לנימוק אלא במקרה בו במהלך ערעור יטען שתשובה מסויימת נובעת מפרשנות של השאלה שהיא סבירה למרות שלא התכוונו אליה אנחנו עושים כל מאמץ כדי שלא יהיו מצבים מעין אלו, אבל אם יהיה, על הנימוק להיות תואם לפרשנות זו המקום המיועד לנימוקים בטופס מספיק לתשובות תמציתיות יש לצרף את טופס המבחן למחברת הבחינה מחברת ללא טופס עזר תפסל תשובות במחברת הבחינה לא תיבדקנה יש למלא מספר סידורי )מספר מחברת( ומספר ת"ז על כל דף של טופס הבחינה אסור השימוש בחומר עזר כלשהו, כולל מחשבונים או כל מכשיר אחר פרט לעט כל הזכויות שמורות למחברים מבלי לפגוע באמור לעיל, אין להעתיק, לצלם, להקליט, לשדר, לאחסן במאגר מידע, בכל דרך שהיא, בין מכנית ובין אלקטרונית או בכל דרך אחרת כל חלק שהוא מטופס הבחינה בהצלחה!
עמוד 1 מעבר עמוד שאלה 1: בחן/י את הקוד הבא ובחר/י את התשובה הטובה ביותר 1 בהרצת התוכנית יודפס: ]1,1,1[ א ]3,3,3[ ב ]1,1,1[ ג ]1,3,3[ ד ]1,1,1[ ה ]1,1,1[ ו ]3,3,1[ ז
A ו עמוד 3 1 שאלה :1 נתונה חתימת המתודה,func B הן שתי מחלקות שונות: התבוננו בטענות הבאות, הנטענות לכל A ו B, בהנחה שידוע כי גם A וגם B אינן מנשקים: טענה 1: ניתן לקרוא ל func רק עם משתנה מטיפוס סטטי A טענה 1: ניתן לקרוא ל func רק עם משתנה מטיפוס דינאמי A טענה 3: הפונק' func תתקמפל רק אם B הוא צאצא של A בעץ הירושה טענה 1: אם הקוד מתקמפל, לא תיתכן שגיאת זמן ריצה בשלב ה casting מ B ל A בחר/י את התשובה הטובה ביותר: א רק טענה 1 נכונה ב רק טענה 1 נכונה ג רק טענה 3 נכונה ד טענות 341 נכונות ה טענות 143 נכונות ו טענות 141 נכונות ז טענות 141 נכונות ח אף טענה אינה נכונה שאלה 3: בחן/י את הטענות הבאות ובחר/י את התשובה הטובה ביותר טענה 1: כל הקבועים והשירותים במנשק יהיו בעלי ניראות public טענה 1: מחלקה יכולה לממש יותר ממנשק אחד טענה 3: מנשק יכול לממש מנשק אחר או לרשת ממחלקה אבסטרקטית, בתנאי שהמחלקה האבסטרקטית אינה מכילה מימושים טענה 1: כל מחלקה אשר עושה implements למנשק חייבת לממש את כל השירותים שהוא מגדיר בחר/י את התשובה הטובה ביותר: כל הטענות נכונות א נכונות רק טענות 14341 ב רק טענות 141 נכונות ג רק טענות 14143 נכונות ד רק טענות 141 נכונות ה רק טענות 143 נכונות ו רק טענות 141 נכונות ז רק טענות 14341 נכונות ח 3
עמוד 1 1 שאלה :1 בהנתן מנשק A, נרצה להגדיר אוסף MyList גנרי שיכיל רק עצמים מטיפוסים המממשים את המנשק A האוסף יממש את המנשק הגנרי List כמו שהוא, מבלי להוסיף שירותים חדשים לדוגמא, עבור שתי מחלקות B ו C המממשות את A נרצה שהקוד של Test יתקמפל, ובנוסף, אם נוציא את השורה האחרונה מההערה, הקוד לא אמור להתקמפל מהי ההגדרה הנכונה של המחלקה?MyList List<T> MyList<T extends A> implements א A> MyList<T> implements List<T extends ב List<A> MyList<T extends A> implements ג A> MyList<A> implements List<T extends ד List<T> MyList<A> implements ה List<A> MyList<T> implements ו A> MyList implements List<T extends ז במחלקה גנרית לא ניתן לצמצם את הטיפוס הגנרי בתוך הגדרת המחלקה ח
עמוד 5 5 שאלה :5 בחן/י את הקוד הבא ובחר/י את התשובה הטובה ביותר: בהרצת התוכנית CC יודפס: ; 5 8 AAfoo: א ; 8 8 AAfoo: ב ; 5 5 AAfoo: ג ; 8 5 AAfoo: ד ; 5 8 BBfoo: ה ; 8 8 BBfoo: ו ; 5 5 BBfoo: ז ; 8 5 BBfoo: ח שאלה 6: להלן מספר טענות על חריגים: טענה 1: לא חייבים להצהיר בחתימת המתודה על זריקת חריגים שאינם נבדקים )unchecked( טענה 1: חריגים שאינם נבדקים אינם יכולים להיתפס בבלוק try/catch ויש לטפל בהם בצורה אחרת, למשל לבדוק קלט לפני קריאה למתודה שעלולה לזרוק אותם טענה 3: מדיניות ההצהרה על חריגים נועדה למנוע שגיאות זמן ריצה במידה ונוריד מהקוד הצהרה על חריג, הקוד עלול לעוף בזמן ריצה בחר/י את התשובה הטובה ביותר: א אף טענה אינה נכונה ב רק טענה 1 נכונה ג רק טענה 1 נכונה ד רק טענה 3 נכונה ה רק טענות 141 נכונות ו רק טענות 143 נכונות ז רק טענות 143 נכונות ח כל הטענות נכונות 6
עמוד 6 7 שאלה :7 לפניכם קוד אשר מיועד לקרוא שורה אחת מקובץ הטקסט,inputtxt ומספר טענות הקשורות אליו הקוד הנתון משתמש במחלקה BufferedReader אותה ראיתם בתרגול, ועובדת בדומה למחלקה MyBufferedReader אותה מימשתם באחד מתרגילי הבית הניחו כי הקובץ inputtxt קיים בנתיב ההרצה ומכיל יותר משורת טקסט אחת טענה 1: השימוש ב BufferedReader מבטיח לנו כי עבור כל קריאה ל readline נקרא מהקובץ inputtxt פעם אחת לכל היותר טענה 1: שימוש ב BufferedReader מבטיח לנו שלא יקרו שגיאות IOException בזמן הקריאה מקובץ טענה 3: אם נרצה לחסוך בגישות לקובץ ממנו אנו קוראים, נרצה שגודל ה buffer של ה BufferedReader יהיה כמה שיותר גדול בחרי/י את התשובה הטובה ביותר: א אף טענה אינה נכונה ב כל הטענות נכונות ג רק טענה 1 נכונה ד רק טענה 1 נכונה ה רק טענה 3 נכונה ו רק טענות 141 נכונות ז רק טענות 143 נכונות ח רק טענה 143 נכונות
עמוד 7 8 שאלה :8 לפניכם קוד המחלקה,Gen_Class מימוש המתודה main ובנוסף, שלושה מימושים אפשריים של הפונקציה func המופיעים בהערה הקוד אינו מתקמפל כיוון ש main קוראת ל func עבורה אין מימוש מבין שלושת המימושים האפשריים ל func )מספור כל פונקציה מופיעה בהערה(, הוספת איזה מימוש תאפשר לקוד של main להתקמפל? הניחו כי אנו מתייחסים להוספת כל אחד משלושת המימושים בנפרד מימוש מספר 1 בלבד א מימוש מספר 1 בלבד ב מימוש מספר 3 בלבד ג מימוש מספר 1 או מימוש מספר 1 בלבד ד מימוש מספר 1 או מימוש מספר 1 בלבד ה מימוש מספר 1 או מימוש מספר 3 בלבד ו הוספת כל אחד מבין המימושים תגרום לקוד להתקמפל ז הקוד לא יתקמפל עבור הוספת אף אחד מבין שלושת המימושים ח שאלה 1: לפניך מספר טענות כלליות על ארכיטקטורת Java בחר/י את הטענה שאינה נכונה א המהדר )compiler( קורא קבצי Java ומייצרי קבצי byte code ב ה JVM מכיל את המהדר )compiler( והמפרש )interpreter( של Java ג ניתן לקמפל ב Java 8 קוד שנכתב בסינטקס של Java 7 ד אם על מחשב לינוקס מותקן מפרש )interpreter( של,java 7 נוכל להריץ עליו תוכנית שהודרה )compiled( בגירסת java 7 על מחשב windows 1
עמוד 8 1 שאלה :1 נתונה המחלקות A ו B נרצה לבדוק אם ניתן יהיה להוריד חלק מהבנאים הממומשים ב A כך ש Bתתקמפל מבלי לשנות את המימוש שלה הבנאים של A ממוספרים בהערות המופיעות ליד ההצהרה על כל בנאי שימו לב שלשלושת הבנאים של A מימוש ריק והם אינם תלויים אחד בשני בחר/י את התשובה הטובה ביותר: הקוד של B אינו מתקמפל ועבור כל בנאי שנסיר מ A הוא ימשיך לא להתקמפל א הקוד של B אינו מתקמפל, אבל ניתן להסיר בנאים מ A כך ש B תתקמפל ב הקוד של B מתקמפל, על מנת שימשיך להתקמפל, ניתן להסיר רק את בנאי 1 ג הקוד של B מתקמפל, על מנת שימשיך להתקמפל, ניתן להסיר רק את בנאי 1 ד הקוד של B מתקמפל, על מנת שימשיך להתקמפל, ניתן להסיר רק את בנאי 3 ה הקוד של B מתקמפל, אם נסיר את בנאים 141, הקוד ימשיך להתקמפל ו הקוד של B מתקמפל, אם נסיר את בנאים 143, הקוד ימשיך להתקמפל ז הקוד של B מתקמפל, אם נסיר את בנאים 143, הקוד ימשיך להתקמפל ח
עמוד 1 11 שאלה :11 א ב ג ד ה ו ז ח ט ולאחר מכן תעוף על שגיאת זמן ריצה # ERROR! A התוכנית תדפיס: התוכנית תדפיס : # ERROR! A ותסתיים באופן תקין ללא שגיאות ולאחר מכן תעוף על שגיאת זמן ריצה # # ERROR! A התוכנית תדפיס: # # ERROR! A ותסתיים באופן תקין ללא שגיאות התוכנית תדפיס: ולאחר מכן תעוף על שגיאת זמן ריצה # ERROR! A # התוכנית תדפיס: # ERROR! A # ותסתיים באופן תקין ללא שגיאות התוכנית תדפיס: ולאחר מכן תעוף על שגיאת זמן ריצה # # ERROR! A # התוכנית תדפיס: # # ERROR! A # ותסתיים באופן תקין ללא שגיאות התוכנית תדפיס: # C A # ERROR! # ERROR! # ותסתיים באופן תקין ללא התוכנית תדפיס: שגיאות 11 שאלה :11 לפניך מספר טענות על המילה השמורה final בחר/י את הטענה הנכונה: שדות שהם final חייבים להיות מוגדרים גם כ static )אך יתכנו שדות סטטיים א שאינם )final מתודה שהיא final היא מתודה שהמחלקה היורשת לא יכולה לקרוא לה ב מתודה שהיא final היא מתודה שלא דורסת אף מתודה במחלקת האב ג לא ניתן להגדיר מחלקה כ final ד גם שדות מחלקה וגם משתנים של פונקציות יכולים להיות מוגדרים כ final ה
עמוד 1 13 שאלה :13 שימו לב פעולת ה append משנה את הערך של המחרוזת הנבנית ומחזירה את העצם שעליו הפעלנו את הפעולה כך ניתן למשל לשרשר שוב ושוב: מה יקרה בהרצת המתודה :?testfinally יודפס CoolReturn+1 שגיאת קומפילציה יודפס CoolReturn שגיאת זמן ריצה יודפסCool+1 יודפס Cool יודפס 41 יודפס Cool+1Return תודפס מחרוזת ריקה א ב ג ד ה ו ז ח ט
עמוד 11 11 שאלה 14 מה יקרה עם ההרצה: שגיאת קומפילציה בשורה של for א שגיאת זמן ריצה בשורה של itnext() ב XL XXL XXXL בשורות נפרדות יודפסו שלוש מידות ג יודפסו שש מידות בשורות נפרדות ד
עמוד 11 15 שאלה :15 מבין הטענות הבאות, אילו טענות נכונות? בחר/י את התשובה הטובה ביותר: A,C,D A,B,C,D D A,C A,B א ב ג ד ה 16 שאלה :16 מה יודפס בשורות נפרדות משמאל לימין בהרצת התוכנית? הניחו כי קיים מימוש כלשהו למחלקה A והקוד מתקמפל true, false, false א true, true, false ב false, true, false ג false, false, true ד false, false, false ה true, true, true ו
עמוד 13 17 שאלה :17 שאלה זו מתייחסת לגירסת Java 8 עבור תוכנית תקינה שעוברת קומפילציה מה צריך להיות במקום ****? a); void saymessage(string א a); String saymessage(string ב saymessage(); void ג saymessage(); String ד y); void saymessage(string x, String ה
עמוד 11 18 שאלה :18 התבוננו בקוד הבא: מה יודפס בהרצת התוכנית D?: AC א AA ב CA ג CC ד הקוד לא יתקמפל ה תתרחש שגיאה בזמן ריצה ו
עמוד 15 11 שאלה :19 מה צריך להיות?a? בשורה השניה על מנת שהקוד יתקמפל? <String,HttpServlet> א <String,String> ב <HttpServlet,String> ג HttpServlet> < ד <String> ה
עמוד 16 1 שאלה :1 לפניך מספר טענות המתייחסות לקוד הנתון: טענה 1: הקוד אינו מתקמפל טענה 1: אם נמחק את השורה המסומנת ב ***// הקוד לא יתקמפל טענה 3: בכל מצב בו נשאיר בקוד יותר משורה אחת מבין השורות המסומנות ב ***///,**//,*// הקוד לא יתקמפל אילו מבין הטענות הן נכונות? בחר/י את התשובה הטובה ביותר: א אף טענה אינה נכונה ב רק טענה 1 נכונה ג רק טענה 1 נכונה ד רק טענה 3 נכונה ה רק טענות 1,1 נכונות ו רק טענות 1,3 נכונות ז רק טענות 1,3 נכונות ח כל הטענות נכונות
עמוד 17 11 שאלה :11 מה יודפס בהרצת התוכנית הבאה? 2 1 21 ריצה תקינה שלא תדפיס כלום התוכנית תעוף בזמן ריצה א ב ג ד ה 11 שאלה :11 מה יהיה הפלט של התוכנית הבאה? i= s=5 i= s=7 i= s=12 i= s=15 i=7 s=5 i=7 s=7 i=7 s=12 i=7 s=15 א ב ג ד ה ו ז ח
עמוד 18 13 שאלה :13 לפניכם מימוש שתי מחלקות, A ו B בהגדרת אילו מבין המתודות במחלקה B תהיה שגיאת קומפילציה? f1,f2 א f2,f3,f4 ב f3 ג f1,f2,f3 ד f2,f4 ה f3,f4 ו 11 שאלה :11 אילו ערכים מבין הערכים }x4,x1{,x2,x3 ניתן להציב במקום?x? על מנת שהקוד יתקמפל? בחר/י את התשובה הטובה ביותר: x1,x2,x3,x4 א x2,x4 בלבד ב x1,x3 בלבד ג x2,x3,x4 בלבד ד x4 בלבד ה x3,x4 בלבד ו
עמוד 11 15 שאלה :15 איזה טקסט יופיע על הכפתור לאחר לחיצה אחת עליו בהרצת התוכנית? א 3 ב ג 111 ד 111 ה 1